'''
 # @ Author: Jeff Chen
 # @ Create Time: 2025-10-13 15:44:16
 # @ Description: 主程序入口
 '''
import os
import argparse
import cv2
from thermal_processor import ThermalImageProcessor
from utils.visualization import ThermalVisualizer

def main():
    """主函数"""
    parser = argparse.ArgumentParser(description='热成像低温区域标注工具')
    parser.add_argument('--input', '-i', type=str, required=True,
                       help='输入图像路径')
    parser.add_argument('--output', '-o', type=str, default='output/result.jpg',
                       help='输出图像路径')
    parser.add_argument('--config', '-c', type=str, default='config/default_config.yaml',
                       help='配置文件路径')
    parser.add_argument('--clusters', '-k', type=int, default=None,
                       help='聚类数量（覆盖配置文件）')
    
    args = parser.parse_args()
    
    # 创建输出目录
    os.makedirs(os.path.dirname(args.output), exist_ok=True)
    
    try:
        # 初始化处理器
        processor = ThermalImageProcessor(args.config)
        
        # 如果指定了聚类数量，覆盖配置
        if args.clusters:
            processor.config['kmeans']['n_clusters'] = args.clusters
        
        # 处理图像
        print("开始处理热成像图像...")
        results = processor.process_image(args.input)
        
        # 显示聚类信息
        cluster_info = results['cluster_info']
        print("\n聚类分析结果:")
        print(f"聚类中心温度值: {cluster_info['cluster_centers']}")
        print(f"低温聚类: {cluster_info['low_temperature_cluster']}")
        print(f"低温值: {cluster_info['low_temperature_value']:.2f}")
        
        # 可视化结果
        visualizer = ThermalVisualizer(processor.config)
        
        # 创建标注图像
        annotated_image = visualizer.create_visualization(results, args.output)
        
        # 创建对比图
        comparison_path = args.output.replace('.jpg', '_comparison.png')
        visualizer.create_comparison_figure(results, comparison_path)
        
        # 显示结果
        cv2.imshow('Low Temperature Regions', annotated_image)
        print("按任意键关闭窗口...")
        cv2.waitKey(0)
        cv2.destroyAllWindows()
        
        print("处理完成!")
        
    except Exception as e:
        print(f"处理过程中出现错误: {e}")

if __name__ == "__main__":
    '''
    # 基本使用
    python main.py -i data/input/热成像图例.jpg -o data/output/result.jpg

    # 指定聚类数量
    python main.py -i data/input/热成像图例.jpg -o data/output/result.jpg -k 8

    # 使用自定义配置
    python main.py -i data/input/热成像图例.jpg -o data/output/result.jpg -c config/custom_config.yaml
    '''
    main()
